package Data_IO.data_json;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;

/**
 * The type Json TargetFlight.
 */
@Data
public class Json_TargetFlight {

    /**
     * The JSONArray.
     */
    private JSONArray jsonarray = new JSONArray();

    /**
     *
     * @param object
     */
    //Add a jsonObject
    public void addJson(Object object){
        JSONObject JsonOb = (JSONObject) JSON.toJSON(object);
        JSON json = (JSON) JSON.toJSON(object);
        jsonarray.add(JsonOb);
    }
//
//    /**
//     *
//     * @param flightID
//     * @param attribute
//     * @param string
//     */
//    //Create and add an attribute
//    public void addJson_attribute(String flightID, String attribute, String string){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(flightID)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.getJSONObject(i).put(attribute,string);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }
//
//    /**
//     *
//     * @param flightID
//     * @param key
//     * @param newValue
//     */
//    //Change the information
//    public void resetJsonKeyvalue(String flightID, String key, String newValue){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(flightID)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.getJSONObject(i).put(key,newValue);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }
//
//    /**
//     *
//     * @param flightID
//     */
//    //Delete a jsonObject
//    public void deleteJson(String flightID){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(flightID)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.remove(i);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }


    /**
     * Search the requested targetFlight with flightID and return the corresponding JsonObject.
     * @param flightID
     * @return The requested targetFlight in JsonObject
     */
    public JSONObject searchJson_returnTargetFlight(String flightID){

        for(int i = 0; i < jsonarray.size(); i++){
            if(jsonarray.getJSONObject(i).getString("targetFlightID").equals(flightID)){
                System.out.println("TargetFlight Exist!");
                return jsonarray.getJSONObject(i);
            }
        }
        return null;
    }

    /**
     * Sync the JsonArray extracted from the json file.
     * @param ja
     */
    public void syncJsonArray(JSONArray ja){
        jsonarray.clear();
        jsonarray.addAll(ja);
    }

    /**
     * Return the idx of desired targetFlight.
     * @param flightID
     * @return The idx of desired targetFlight
     */
    public int returnIdx(String flightID) {
        for(int i = 0; i < jsonarray.size(); i++){
            if(jsonarray.getJSONObject(i).getString("targetFlightID").equals(flightID)){

                return i;
            }
        }
        return 0;
    }
}

